Aufgabe 1: Informiere dich im Internet über die Vor- und Nachteile von Compilersprachen bzw. Interpretersprachen
Aufgabe 2: Suche im Internet nach Beispielen für Compilersprachen bzw. Interpretersprachen
Aufgabe 3: Informiere dich im Internet darüber, wie Java und Python zuzuordnen sind
public class Klassenname{
public static void main(String[] args){
Definitionen und Anweisungen; //Hier beginnt das Programm
}
}
Beispiel:
public class Hallo{
public static void main(String... args){
System.out.println("Hallo in meinem ersten Programm");
}
}
Statt das Rad neu zu erfinden, kann es auch importiert werden:
Beispiel für Nachrichtenfenster:
import javax.swing.JOptionPane;
public class Nachrichtenfenster{
public static void main(String... args){
JOptionPane.showMessageDialog(null, "Hallo im Nachrichtenfenster");
}
}
| Typ | Wertebereich | Beispiel |
|---|---|---|
| Ganze Zahlen | ||
| byte | -128…127 | 123 |
| short | -32768…32767 | 1234 |
| int | -2\cdot 10^9...2\cdot 10^9 | 12345 |
| long | -10^{19}...10^{19} | 123456L |
| Gleitkommazahlen | ||
| float | -10^{38}...10^{38} | 1.2f |
| double | -10^{308}...10^{308} | 1.2 |
| Wahrheitswert | ||
| boolean | {true, false} | true |
| Zeichen | ||
| char | Unicode Zeichen | ‘c’ |
| Zeichenkette | ||
| String | “Hallo” |
Definition einer Variablen:
//<Datentyp> <Bezeichner>;
int zahl;
Initialsierung (Zuweisung):
//<Bezeichner> = <Wert>;
zahl = 1;
Definition und Initialisierung:
//<Datentyp> <Bezeichner> = <Wert>;
int zahl = 1;
public class Willkommen{
...
}
public class Willkommen
{
...
}
import java.util.Scanner;
public class Text{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String text = in.nextLine(); //liest die nächste Zeile ein
int i = in.nextInt(); //liest die nächste Zeile als Zahl ein
int j = in.nextInt();
System.out.println(i+j);
}
}
| Numerische Operatoren | Logische Operatoren | ||
|---|---|---|---|
| + | Addition | == | Gleichheit |
| – | Subtraktion | != | Ungleichheit |
| * | Multiplikation | < | kleiner als |
| / | Division | <= | kleiner gleich |
| % | Modulo (Rest einer Division) | > | größer als |
| ++ | Inkrement | >= | größer gleich |
| += | Inkrement und Zuweisung | ! | nicht |
| – – | Dekrement | && | UND |
| –= | Dekrement und Zuweisung | || | ODER |
| (…) | Klammerung | ||
//Bedingte Anweisung:
if(bedingung){
//Anweisungen, die ausgeführt werden, wenn bedingung true ist
}
//Anweisungen, die unabhängig von bedingung nach der bedingten Anweisung ausgeführt wird
//Verzweigung
if(bedingung){
//Anweisungen, die ausgeführt werden, wenn bedingung true ist
}else{
//Anweisungen, die ausgeführt werden, wenn bedingung false ist
}
//Anweisungen, die unabhängig von bedingung nach der Verzweigung ausgeführt wird
Aufgabe: Schreibe einen Chatbot, der mit dem Nutzer chattet. Sorge durch sinnvolle Variablen und Kommentare dafür, dass das Programm für Andere leicht nachzuvollziehen ist und achte auf die besprochenen Konventionen. Der Dateiname soll dein Name sein.
Der Chatbot / das Programm sollte folgendes erfüllen:for(INITIALISIERUNG; BEDINGUNG; AKTUALISIERUNG){} ANWEISUNGEN; }
Beispiel:
int summeVon0Bis9 = 0;
for(int i=0; i<10; i++){
summeVon0Bis9 += i;
}
while(BEDINGUNG){ ANWEISUNGEN; }
Beispiel:
int summeVon0Bis9 = 0;
int i = 0;
while(i<10){
summeVon0Bis9 += i;
i++;
}
do{ ANWEISUNGEN; }(BEDINGUNG);
Beispiel:
int i = 0;
int summeVon0Bis9 = 0;
do{
summeVon0Bis9 += i;
i++;
}while(i<10);
for(TYP ELEMENT : KOLLEKTION){ ANWEISUNGEN; }
Beispiel:
int[] numbers = {0,1,2,3,4,5,6,7,8,9};
int summeVon0Bis9 = 0;
for(int i : numbers){
summeVon0Bis9 += i;
}
Ein in der Grundschule und in der Sekundarstufe 1 beliebtes Mathespiel ist die verflixte Sieben.
Dabei zählt man reihum von 1 beginnend aufwärts, aber lässt jede Zahl aus, die durch die 7 teilbar ist oder die 7 als Ziffer enthält.
Also: 1,2,3,4,5,6,8,…,13,15,16,18…
Erstelle ein Programm das auf diese Weise von 1 bis 1000 zählt.
Dabei ist der Modulo Operator % und die Funktion STRINGVARIABLENNAME.contains(“ZEICHENKETTE, DIE ENTHALTEN SEIN SOLL”) nützlich.
DATENTYP[] ARRAYVARIABLENNAME = new DATENTYP[LÄNGEDESARRAYS];
Die leeren eckigen Klammern dürfen auch hinter dem Arrayvariablennamen stehen:
DATENTYP ARRAYVARIABLENNAME[] = new DATENTYP[LÄNGEDESARRAYS];
Der Inhalt des Arrays kann bereits bei der Definition des Arrays initialisiert werden:
DATENTYP[] ARRAYVARIABLENNAME = {ELEMENT0, ELEMENT1, ..., ELEMENTN};
String[] namen = new String[3]; //Array wird deklariert
namen[0] = "Max"; //Der Inhalt an der Stelle 0 des Arrays wird initialisiert
namen[1] = "Hans";
namen[2] = "Petra";
System.out.println("Der erste Name in der Liste ist " + namen[0]); //Der erste Name wird in der Konsole ausgegeben
String[] namen = {"Max", "Hans", "Petra"}; //Array wird deklariert und sein Inhalt gleichzeitig initialisiert, die Länge ergibt sich damit automatisch
System.out.println("Der erste Name in der Liste ist " + namen[0]); //Der erste Name wird in der Konsole ausgegeben
boolean[] istMaennlich = new boolean[3];
istMaennlich[0] = true;
istMaennlich[1] = true;
istMaennlich[2] = false;
int[] alter = {16, 17, 16};
System.out.println(namen[0] + " ist " + alter[0] " Jahre alt."); //Max ist 16 Jahre alt.
if(istMaennlich[0]){ //Wenn die erste Person in der Liste männlich ist, wird dies so ausgegeben.
System.out.println(namen[0] + " ist männlich.");
}else{ //ansonsten wird ausgegeben, dass sie weiblich ist.
System.out.println(namen[0] + " ist weiblich.");
}
int[][] matrix = new int[3][4];
matrix[0][0] = 1;
matrix[0][1] = 2;
...
matrix[2][3] = 12;
die gleiche Matrix erzeugt auch
int[][] matrix = new int[3][4];
int[] zeile0 = {1,2,3,4};
int[] zeile1 = {5,6,7,8};
int[] zeile2 = {9,10,11,12};
matrix[0] = zeile0;
matrix[1] = zeile1;
matrix[2] = zeile2;
oder
int[][] matrix = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
Eine Primzahl ist eine natürliche Zahl, die durch genau zwei verschiedene natürliche Zahlen teilbar ist. Anders ausgedrückt ist eine Primzahl eine natürliche Zahl, die nur durch sich selbst und die Zahl 1 teilbar ist, mit Außnahme der 1 selbst.
1. Schreibe ein Programm, das die ersten 100 Primzahlen findet, in einem Array speichert und das Array am Ende ausgibt.
Um zu ermitteln, ob eine natürliche Zahl x eine Primzahl ist, kann man x durch jede natürliche Zahl kleiner als x teilen und überprüfen, ob ein Rest übrig bleibt.
Dabei kann der Modulo-Operator % nützlich sein, der den Rest zurückgibt der beim Teilen von zwei Zahlen übrig bleibt.
2. Finde und implementiere einen Algorithmus, der effizienter arbeitet, als der eben beschriebene Algorithmus, indem nicht jede kleinere Zahl als x überprüft wird, sondern nur die nötigen.
public static RÜCKGABETYP METHODENNAME(PARAMETER){
ANWEISUNGEN;
return RÜCKGABEWERT;
}
public class KLASSENNAME{
public static void main(String[] args){
ANEISUNGEN;
}
public static RÜCKGABETYP METHODENNAME(PARAMETER){
ANWEISUNGEN;
}
}
public class Rechteck{
public static void main(String[] args){
int a = 5;
int b = 7;
int flaecheninhalt = berechneFlaecheninhalt(a, b);
System.out.println("Berechnete Fläche: "+flaecheninhalt);
}
public static int berechneFlaecheninhalt(int x, int y){
return x*y;
}
}
public class Hallo{
public static void main(String[] args){
String name = "Basler";
sagHallo(name);
}
public static void sagHallo(String name){
System.out.println("Hallo Herr "+name);
}
}
Kopiere den folgenden Quelltext und beende die TODOs so, dass ein lauffähiges Programm mit den gewünschten Ergebnissen entsteht.
public class Mathe{
public static void main(String[] args){
int x = 3;
int y = 5;
int z = 7;
//TODO printSolutions wird mit x und y aufgerufen
int addition = //TODO add wird mit x, y und z aufgerufen
//TODO addition wird in der Konsole ausgegeben
}
//die Funktion add wird definiert
//add hat zwei int Parameter
public static int add(int a, int b){
//TODO add gibt die Addition der Parameter zurück
}
//TODO eine weitere Funktion add wird definiert (gleicher Name wie zuvor, aber drei Parameter)
//add hat drei int PARAMETER
//add gibt die Addition der drei Parameter zurück, aber nutzt dafür nicht +, sondern die oben bereits definierte add Funktion
//TODO die Funktion mult wird definiert
//mult hat zwei int Paramter
//mult gibt die Multiplikation der Parameter zurück
//TODO sub wird definiert
//sub hat zwei int Parameter
//sub gibt die Subtraktion der beiden Parameter zurück
//TODO mod wird definiert
//mod hat zwei int Parameter
//mod gibt den Modulo der beiden Paramter zurück
//TODO printSolutions wird definiert
//printSolutions hat zwei int Parameter
//printSolutions gibt die Ergebnisse aus add, sub, mult und mod der beiden Parameter durch Kommas getrennt auf der Konsole aus
//z.B. wäre die Ausgabe für printSolutions(1,1) auf der Konsole "2,0,1,0"
//printSolutions hat nur diesen Effekt, aber kein eigenes Ergebnis, das zurückgegeben wird
}